package com.zenith.common.annotation.request;


import cn.hutool.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMapping;

import java.lang.annotation.*;
/**
 * 安全的HTTP请求映射注解基类
 */
@Target(ElementType.METHOD) // 指定注解作用目标
@Retention(RetentionPolicy.RUNTIME) // 指定注解保留时间
@Documented // 允许在javadoc中生成
public @interface SecureMapping {
    /**
     * 映射的URL路劲
     */
    @AliasFor(annotation = RequestMapping.class)
    String[] value() default {};

    /**
     * 映射的URL路径（别名）
     */
    @AliasFor(annotation = RequestMapping.class)
    String[] path() default {};

    /**
     * 需要的角色
     */
    String[] roles() default {};

    /**
     * 需要的权限
     */
    String[] permissions() default {};

    /**
     * RequestMapping的其他属性
     */
    @AliasFor(annotation = RequestMapping.class)
    String name() default "";

    @AliasFor(annotation = RequestMapping.class)
    String[] params() default {};

    @AliasFor(annotation = RequestMapping.class)
    String[] headers() default {};

    @AliasFor(annotation = RequestMapping.class)
    String[] consumes() default {};

    @AliasFor(annotation = RequestMapping.class)
    String[] produces() default {};
}
